package com.pnnd.stream;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.InvalidParameterException;

/**
 * 可以自动切片的文件系统，当写入文件大到某个阀值自动会生成一个切片
 *
 */
public abstract class ChunkedFile extends File {

    private String name;
    private File[] slicePaths;

    public ChunkedFile(String pathname) {
        super(pathname);

        if(super.exists() && !super.isDirectory()){
            throw new InvalidParameterException("pathname");
        }


    }

    public abstract InputStream getInputStream();
    public abstract OutputStream getOutputStream();

    /**
     * 获取下一个文件分片，如果是读，当文件片达到最后一个时则抛出
     * EOFException
     * @see FileChunk
     * @return FileSegment
     */
    public abstract FileChunk nextSlice();

    public String getName() {
        return this.name;
    }

    public File[] getPaths() {
        return this.slicePaths;
    }
}
